/**
 * Copyright (C) 2025 pony working team
 * SPDX-License-Identifier: MulanPSL-2.0
 */

/* define to prevent recursive inclusion -------------------------------------*/
#ifndef __A_INTERFACE_H__
#define __A_INTERFACE_H__

/* includes (standard library, system) ---------------------------------------*/
#include <stdint.h>
/* includes (other library) --------------------------------------------------*/
/* includes (project) --------------------------------------------------------*/
/* includes (local) ----------------------------------------------------------*/

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* defines -------------------------------------------------------------------*/
/* typedefs ------------------------------------------------------------------*/
/* macro ---------------------------------------------------------------------*/
/* inlines -------------------------------------------------------------------*/
/* externs -------------------------------------------------------------------*/

extern void sched_start(void);
extern int schedule(int ra);

extern int mem_try_arch(void *dst, void *src, int order);
extern void cpu_idle_enter(void);

extern int critical_exec_on_csp(int (*job)(uintptr_t, uintptr_t), uintptr_t arg1, uintptr_t arg2);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __A_INTERFACE_H__ */
